+ [AFF-MIGRATION-102] Создать TBD
Реализация скрипта угасания интересов (Decay Strategy) для Крон-периода
NoteКраткая карточка задачи
- Репозиторий / Компонент:
affinity-service(Домен Recommendation Domain). - Целевая СУБД: In-Memory Redis (
affinity_db). - Ссылка на Метод: Спецификация метода
- Статус: Готово к реализации
- Инструкция по шагам: На Шаге 5 (системный Cron раз в сутки) во избежание бесконечного разрастания весов и переполнения RAM, необходимо выполнить итерационный пересчет матрицы. Разработать Lua-скрипт угасания связей: он считывает все элементы ZSET по маске, умножает текущий Score на коэффициент
0.95и удаляет связи, чей вес деградировал ниже порогового значения< 0.1.
-- Lua-скрипт для ежедневного угасания весов (Шаг 5)
-- KEYS[1]: Точный ключ ZSET конкретного продукта пользователя
local key = KEYS[1]
local decay_factor = 0.95
local min_score_threshold = 0.1
-- 1. Считываем все элементы с их весами
local items = redis.call('ZRANGE', key, 0, -1, 'WITHSCORES')
for i = 1, #items, 2 do
local member = items[i]
local score = tonumber(items[i+1])
local new_score = score * decay_factor
if new_score < min_score_threshold then
-- Удаляем из графа мертвую/неактивную связь
redis.call('ZREM', key, member)
else
-- Перезаписываем обновленный угасший вес
redis.call('ZADD', key, new_score, member)
end
end
return true